/**
 * Description:
 * Class Name:BetterPrinter
 * Date:2022/1/30 17:14
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第6章_面向对象_下._6_6_接口_经Java9改进;

// 只是比Printer存的数据多了一倍
public class BetterPrinter implements Output{
    private String[] printData = new String[MAX_CACHE_SIZE * 2];
    // 这个是用以记录当前需打印的作业数，也是索引位置
    private int dataNum = 0;

    // 重写Output接口的抽象方法
    @Override
    public void out() {
        // 只要还有作业，就继续打印
        System.out.println("下面开始循环打印>>>");
        while (dataNum > 0){
            System.out.println("高速打印机打印： " + printData[0]);
            // 把作业队列整体前移一位，并将剩下的作业书减1
            System.arraycopy(printData, 1, printData, 0, --dataNum);
        }
    }

    // 重写Output接口的抽象方法
    @Override
    public void getData(String msg) {
        if (dataNum >= MAX_CACHE_SIZE * 2){
            System.out.println("输出队列已满，添加失败");
        }
        else {
            // 把打印数据添加到队列里，已保存数据的数量+1
            printData[dataNum++] = msg;
        }
    }
}
